<?php
namespace app\api\controller;
use think\facade\Db;
use think\facade\Request;
use ouyangke\Ticket;

class Api 
{
        public function __construct()
            {
            // 魔术方法自动调用，使用php的header函数，设置为*，全部能访问
            header("Access-Control-Allow-Origin:*");
            }
         public function index(){

                $ad = Db::table('fxcnc_shezhi')->where('status',1)->select()->toArray();

                echo json_encode($ad);

    }       
            // 程序管理页面
         public function fxcxgl1(){
                // echo '操作系统: ' . PHP_OS . '<hr>';
                // $serverIP = $_SERVER['SERVER_ADDR'];
                // echo "服务器IP地址是：" . $serverIP;
                // 获取根目录
                     $rootPath = $_SERVER['DOCUMENT_ROOT'];
                    // 设置读取文件的目录
                   $fxdir = $rootPath.'/FXCNC/';
                    // 读取目录中的所有文件或目录
                    $files = scandir($fxdir);
                    // echo '<pre>' . print_r($files, true). "<br>" . '</pre>';
                     $filestime=[];
                    //  设置一个起始数据，到下面去循环
                       $bl=1000;
                // 遍历文件列表
                foreach ($files as $file) {
                    // 排除当前目录(.)和上级目录(..)
                    if ($file == '.' || $file == '..') {
                        continue;
                    }
                    // 设置读取目录的路径
                    
                    $cxdir= $fxdir.$file;
                    // 获取目录的修改时间戳
                    $gettime=filemtime($cxdir);
                    // 把时间戳转换成年月日的方式
                    $gettime2=date("YmdHis-$bl", $gettime);
                    $bl=$bl-1;
                    
                    // 将时间戳作为key 目录名作为值 保存到$filestime
                    $filestime[$gettime2]=$file;    
                }
                

                krsort($filestime);


                // foreach ($filestime as $user) {
                    // $path = str_replace(' ', '\\ ', $user)."/"; 替换成linux系统识别的格式
                    // $path = $path."/";
                    // $filestime2[]=$user;  

                // }

             echo json_encode($filestime);
    }

// 枫逍程序管理2

          public function fxcxgl2(){
            // 接收程序管理页面传过来程序名称
            $cxname=input('post.cxname');
            // 将数组中的值拿到           
            $cxvalue = current($cxname);
            // $cxvalue="枫逍MES";
             // 获取根目录
            $rootPath = $_SERVER['DOCUMENT_ROOT'];
            // 获取程序名称的完整路径
            $fxdir = $rootPath.'/FXCNC/'.$cxvalue;
          
            // 读取程序中的所有文件或目录
            $files = scandir($fxdir);
            // 提前设置一个接收程序名称的空数组        
            $cxfiles=[];
            // 获取服务器的ip，为后面的文件跳转路径做准备
            $serverIP = $_SERVER['HTTP_HOST'];
            foreach ($files as $file) {
                    // 排除当前目录(.)和上级目录(..)
                    if ($file == '.' || $file == '..') {
                        continue;
                    }
                    // 设置所有文件的路径
                    $cxdir= "http://".$_SERVER['HTTP_HOST'].'/FXCNC/'.$cxvalue.'/'.$file;
                   // 将时间戳作为key 目录名作为值 保存到$filestime
                  
                    $cxqianzui= strstr($file, '-',true) ;   
                    if (empty($cxqianzui)|| !is_numeric($cxqianzui)) {
                               
                                 $cxqianzui="图档数模"; 
                                
                            }else{
                              
                              $cxqianzui='第'.$cxqianzui.'序';
                            }
                            // 获取文件后缀名
                            $cx2qianzui = pathinfo($file, PATHINFO_EXTENSION);

                // 数组格式: 工序名称     文件后缀名   文件路径  文件名称
                    $cxfiles[$cxqianzui][$cx2qianzui][$cxdir]=$file;  
                   

                }
                $ad = Db::table('fxcnc_shezhi')->where('status', '1')->order('sort', 'desc')->select()->toArray();
                // $cxfiles[$ad]=$cxfiles;
            echo json_encode([$cxfiles,$ad ]);
           
    }

    // [id] => 353
    // [name] => 龙门3
    // [ip] => 192.168.1.2
    // [status] => 1
    // [transport_type] => 1
    // [upload_mode] => 1
    // [sort] => 0
    // [scp_name] => 
    // [scp_pwd] => 
    // [scp_dir] => 
    // [chengxu_name] => 枫逍MES - 4


             public function fxcxgl3(){
              //   接收机床id
              $id=input('post.id');
              //   接收机床名称
              $name=input('post.name');  

              // 接收传输类型，ftp scp
              $transport_type=input('post.transport_type');  

                // 接收工件名称
              $chengxu_name=input('post.chengxu_name');
            //   接受传输模式 文件 目录
              $upload_mode=input('post.upload_mode'); 
                // FTP传输-----------------------------------------------------FTP传输----------------------------------------------------
                // FTP传输-----------------------------------------------------FTP传输----------------------------------------------------
                // FTP传输-----------------------------------------------------FTP传输----------------------------------------------------
                // FTP传输-----------------------------------------------------FTP传输----------------------------------------------------

              if ($transport_type==1) {
             //   当是ftp传输，要判断目录是否存在，不存在就创建
                 $dir=$_SERVER['DOCUMENT_ROOT'].'/'.'NC'.'/'.$id;
                  if (!is_dir($dir)) {
                    mkdir($dir, 0777, true);
                }

                
                    // 获取当前时间作为文件夹名称
                //  $ftp_nane_dir=[]; 
                //  $ftp_nane_dir_qs=0;
                // 获取程序的路径
                // 获取程序的路径
                // 获取程序的路径
                // 获取程序的路径
                $dir_name=$_SERVER['DOCUMENT_ROOT'].'/'.'FXCNC'.'/'.$chengxu_name;
                 $files = scandir($dir_name);
                


                 // 1  目录上传模式
                // 1  ----------------------------------------------------FTP目录上传模式----------------------------------------------------
                // 1  ----------------------------------------------------FTP目录上传模式----------------------------------------------------
                // 1 ---------------------------------------------------- FTP目录上传模式----------------------------------------------------
                // 1  ----------------------------------------------------FTP目录上传模式----------------------------------------------------
                

               if ($upload_mode==1) {
                // 获取当前时间
                $dq_time = date("Y-m-d-H-i-s");
                $dq_timec = time();
                // 当前时间目录路径
                $dq_time_dir=$_SERVER['DOCUMENT_ROOT'].'/'.'NC'.'/'.$id.'/'.$dq_time;
                // echo $dq_time_dir;
                // 创建当前时间的目录
                  if (!is_dir($dq_time_dir)) {
                    mkdir($dq_time_dir, 0777, true);
                }
                // 循环上传文件
                    foreach ($files as $file) {
                        //  屏蔽. .. 目录                    
                        if ($file == '.' || $file == '..' || is_dir($dir_name.'/'.$file)) {
                            continue;
                           
                        }
                    //    程序的目录-源目录
                       $ys_dir=$dir_name.'/'.$file;
                    //    echo  $ys_dir;
                    //    上传的目录
                       $sc_dir=$dq_time_dir.'/'.$file;
                    //    echo  $sc_dir;
                    //  如果复制失败就报错
                        if (copy($ys_dir, $sc_dir)==false) {
                        echo json_encode([
                        'code'=>1,
                        'msg'=>'传输失败，请重试',
                        
                                 ]);
                        exit;
                        }
            }
            // 将传输数据写入数据库
            // 将传输数据写入数据库
            // 将传输数据写入数据库
            // 将传输数据写入数据库
            $data=[
                    'starting_time'=>$dq_timec,
                    'w_name'=>$chengxu_name,
                    'm_name'=>$name,
                   ];

                //    添加数据
               
                $insert= Db::table('fxcnc_jgjl')->insert($data);
                     if (!empty($insert)) {
                    echo json_encode([
                        'code'=>0,
                        'msg'=>'上传成功，写入数据库成功!',
                        'dir'=>$dq_time,
                    ]);
                    };

               }             
                   
            //    ----------------------------------------------------FTP文件上传模式----------------------------------------------------
            //    ----------------------------------------------------FTP文件上传模式----------------------------------------------------
            //    ----------------------------------------------------FTP文件上传模式----------------------------------------------------
            //    ----------------------------------------------------FTP文件上传模式----------------------------------------------------
               if ($upload_mode==2) {
            //    首先删除原来的文件
                // 获取目录里面的所有文件
                    $filess = scandir($dir);
            //   循环删除目录里面的文件----------------------------------------------------
            //   循环删除目录里面的文件----------------------------------------------------
                foreach ($filess as $file) {
                        if (is_file("{$dir}/{$file}")) {
                            if (is_writable("{$dir}/{$file}")) {
                                if (@unlink("{$dir}/{$file}")) {
                                    // echo "文件已成功删除！";
                                } else {
                                    echo json_encode([
                                            'code'=>0,
                                            'msg'=>"删除原文件失败，请检查!",
                                        
                                        ]);
                                    exit;
                                }
                            } else {
                                  echo json_encode([
                                            'code'=>10,
                                            'msg'=>"文件不存在或没有写入权限!",
                                        
                                        ]);
                                    exit;                                     
                                                                
                            }
                        }
                    }
                 //   循环删除目录里面的文件----------------------------------------------------
                 //   循环删除目录里面的文件----------------------------------------------------

                 

                //  上传新文件到机床---------------------------------------------------
                //  上传新文件到机床---------------------------------------------------
                // print_r($files);
                
                    foreach ($files as $file) {
                        //  屏蔽. .. 目录                    
                        if ($file == '.' || $file == '..' || is_dir($dir_name.'/'.$file)) {
                            continue;
                           
                        }
                    //    程序的目录-源目录
                       $ys_dir=$dir_name.'/'.$file;
                    //    echo  $ys_dir;
                      
                    //    上传的目录
                       $sc_dir=$dir.'/';
                    //    echo  $sc_dir;
                        // exit;
                        // $sourceFile = '/path/to/source/file.txt';
                        // $destinationFolder = '/path/to/destination/folder/';
                        
                        // 使用copy函数复制文件
                        if (copy($ys_dir, $sc_dir . basename($ys_dir))) {
                            // echo '文件复制成功';
                        } else {
                                  echo json_encode([
                                            'code'=>10,
                                            'msg'=>"复制文件失败，请停机后再试!",
                                        
                                        ]);
                        }
            }
                //  上传新文件到机床---------------------------------------------------
                //  上传新文件到机床---------------------------------------------------
            // 将传输数据写入数据库
            // 将传输数据写入数据库
            // 将传输数据写入数据库
            // 将传输数据写入数据库
            $dq_timec = time();
            $data=[
                    'starting_time'=>$dq_timec,
                    'w_name'=>$chengxu_name,
                    'm_name'=>$name,
                   ];

                //    添加数据
               
                $insert= Db::table('fxcnc_jgjl')->insert($data);
                     if (!empty($insert)) {
                    echo json_encode([
                        'code'=>0,
                        'msg'=>'上传成功，写入数据库成功!',
                        
                    ]);
                    };


               }

              }

                // SCP传输-----------------------------------------------------SCP传输文件---------------------------------------------------
                // SCP传输-----------------------------------------------------SCP传输-文件---------------------------------------------------
                // SCP传输-----------------------------------------------------SCP传输-文件---------------------------------------------------
                // SCP传输-----------------------------------------------------SCP传输-文件---------------------------------------------------
            if ($transport_type==2 && $upload_mode==2) {

                
                         // 获取当前时间
                        $dq_timec = time();
                        // 获取传输设备的账户
                        $scp_name=input('post.scp_name');
                        // 获取传输设备的密码
                        $scp_pwd=input('post.scp_pwd');
                        // 设置传输机床的ip
                        $jichuangip=input('post.ip');
                        // 获取目标机床路径
                        $scp_dir=input('post.scp_dir');
                        // 将id名称转换成linux系统识别的目标目录
                        $mb_dir="$scp_dir/";
                        //   print_r($mb_dir);
                        //  exit;


                         // 接收工件名称，
                        $gj_name=input('post.chengxu_name');
                        // 将工件名称转换成linux系统识别的目录，源目录 || is_dir($file2) || is_file($file2) 
                        $ys_dir = $_SERVER['DOCUMENT_ROOT'].'/FXCNC/'.str_replace(' ','\ ', $gj_name)."/";
                        // 读取目录中的所有文件或目录
                        $ys_dir_files = scandir($ys_dir);
                        $files = [];
                        foreach ($ys_dir_files as $file) {
                                $file2="$ys_dir$file";

                             if ($file == '.' || $file == '..' || is_dir($file2)) {
                                 continue; // 如果符合条件则跳过当前元素
                                }else {
                                    $files[] = $file2; 
                                }
                        }


                                    
                         //拼接传输所需的代码
                        // $chuanshu="sshpass -p $scp_pwd scp -r $ys_dir $scp_name@$jichuangip:$mb_dir";                    
                        
                        // 判断所传输的机床是否在线                       
                        $pd_zt = @ssh2_connect($jichuangip, 22);
                        if (!$pd_zt) {
                                     echo json_encode([
                                        'code'=>0,
                                        'msg'=>'设备不在线，请检查网络后重试!',
                                                
                                     ]);
                                     exit;
                        }
                        // 判断账户密码是否正确
                        if (!@ssh2_auth_password($pd_zt, $scp_name, $scp_pwd)) {
                                    echo json_encode([
                                        'code'=>0,
                                        'msg'=>'设备账户密码错误，请检查!',
                                                
                                     ]);
                                     exit;
                        }else {
                            //  根据目录首字符选择删除程序的代码
                            $cmd_shell =  substr($scp_dir, 0, 1) ;
                                // 用shell删除设备上的文件               
                                // 用shell删除设备上的文件               
                                // 用shell删除设备上的文件               
                             if ($cmd_shell=='/') {

                            $rm_dir ='rm' ." ". $scp_dir.'/*'; // 获取设备要删除的文件路径
                            // print_r($rm_dir);  
                         // 删除设备上的文件
                          $rm_dir_stream=ssh2_exec($pd_zt, $rm_dir); 
                          sleep(3);


                            // 获取设备上的文件信息
                            $hq_dir ='ls'." ".$scp_dir;
                             // 查询设备上的文件
                          $hq_dir_stream=ssh2_exec($pd_zt, $hq_dir);
                          // 设置流为阻塞模式
                          stream_set_blocking($hq_dir_stream, true); 
                                
                                $output = '';
                                while ($line = fgets($hq_dir_stream)) {
                                    $output .= $line;
                                }

                                //  判断返回的数据中有没有点，如果有就提示未全部删除
                                if (strpos($output, '.') !== false) {
                                    echo json_encode([
                                        'code'=>0,
                                        'msg'=>'设备上文件未全部删除,请检查后重试!',
                                                
                                     ]);
                                     exit;                                
                                }                       

                             }else {
                             // 用cmd删除设备上的文件     
                             // 用cmd删除设备上的文件     
                             // 用cmd删除设备上的文件     
                             // 用cmd删除设备上的文件  
                            //  del /QC:/Users/administrator/Desktop/nc\*.*
                             // 获取设备要删除的文件路径del /Q C:\Users\CNC\Desktop\2024-02-23-11-36-34\*.*

                             $scp_dir_th = str_replace('/', '\\', $scp_dir);
                            $rm_dir ='del' ." /Q"." ".$scp_dir_th.'\*.*'; 
                            // print_r($rm_dir);
                            // exit;
                         // 删除设备上的文件
                          $rm_dir_stream=ssh2_exec($pd_zt, $rm_dir); 
                        //   echo $rm_dir_stream;
                        //   exit;
                          sleep(3);
                             $hq_dir ='dir'." /B ".$scp_dir_th;
                         
                            // 获取设备上的文件信息
                            
                            // print_r($hq_dir);
                            // exit;
                             // 查询设备上的文件
                          $hq_dir_stream=ssh2_exec($pd_zt, $hq_dir);
                          // 设置流为阻塞模式
                          stream_set_blocking($hq_dir_stream, true); 
                                
                                $output = '';
                                while ($line = fgets($hq_dir_stream)) {
                                    $output .= $line;
                                }
                                // print_r($output);
                                // exit;
                                //  判断返回的数据中有没有点，如果有就提示未全部删除
                                if (strpos($output, '.') !== false) {
                                    echo json_encode([
                                        'code'=>0,
                                        'msg'=>'设备上文件未全部删除,请检查后重试!',
                                                
                                     ]);
                                     exit;                                
                                }   
                             }

                        }                        
                        


                        // 数据库查询服务器的账户密码
                        $ad = Db::table('fxcnc_user')->where('id',1)->select()->toArray();
                        // 设置服务器主机的ip和账户密码
                        $connection = @ssh2_connect($ad[0]['root_ip'], 22);
                        // 判断服务器连接状态
                        if (!$connection) {
                                     echo json_encode([
                                        'code'=>0,
                                        'msg'=>'服务器连接失败，请检查SSH设置',
                                                
                                     ]);
                                     exit;
                        } 
                        // 判断服务器账户密码
                         if (!@ssh2_auth_password($connection, $ad[0]['root_name'], $ad[0]['root_pwd'])) {
                                     echo json_encode([
                                        'code'=>0,
                                        'msg'=>'服务器,账户密码错误',
                                                
                                     ]);
                                     exit;                             
                         }else{
                                                // 循环路径，执行代码传输程序
                                                foreach ($files as $file) {

                                                 // 如果是文件的话，执行代码传输程序
                                                   
                                                        //拼接传输所需的代码
                                                        $chuanshu="sshpass -p $scp_pwd scp -r $file $scp_name@$jichuangip:$mb_dir"; 
                                                        $stream = ssh2_exec($connection, $chuanshu);
                                                }
                         }
                         
                    // 设置写入数据库的参数
                       $data=[
                        'starting_time'=>$dq_timec,
                        'w_name'=>$chengxu_name,
                        'm_name'=>$name,
                       ];
                //    添加数据
               
                $insert= Db::table('fxcnc_jgjl')->insert($data);
                     if (!empty($insert)) {
                    echo json_encode([
                        'code'=>0,
                        'msg'=>'上传成功，写入数据库成功!',
                        'dir'=>0,
                        
                    ]);
                    };
         
            }

                // SCP传输-----------------------------------------------------SCP传输-目录---------------------------------------------------
                // SCP传输-----------------------------------------------------SCP传输-目录---------------------------------------------------
                // SCP传输-----------------------------------------------------SCP传输-目录---------------------------------------------------
                // SCP传输-----------------------------------------------------SCP传输-目录---------------------------------------------------
            if ($transport_type==2 && $upload_mode==1) {

                
                         // 获取当前时间
                        $dq_timec = time();
                        $current_time = date('Y-m-d-H-i-s');
                        // 获取传输设备的账户
                        $scp_name=input('post.scp_name');
                        // 获取传输设备的密码
                        $scp_pwd=input('post.scp_pwd');
                        // 设置传输机床的ip
                        $jichuangip=input('post.ip');
                        // 获取目标机床路径
                        $scp_dir=input('post.scp_dir');
                        // 将id名称转换成linux系统识别的目标目录
                        $mb_dir="$scp_dir/$current_time";
                        // print_r($mb_dir);
                        //  exit;

                         // 接收工件名称，
                        $gj_name=input('post.chengxu_name');
                        // 将工件名称转换成linux系统识别的目录，源目录
                        $ys_dir = $_SERVER['DOCUMENT_ROOT'].'/FXCNC/'.str_replace(' ','\ ', $gj_name)."/";
                        
                         //拼接传输所需的代码
                        $chuanshu="sshpass -p $scp_pwd scp -r $ys_dir $scp_name@$jichuangip:$mb_dir";                    
                        
                        // 判断所传输的机床是否在线                       
                        $pd_zt = @ssh2_connect($jichuangip, 22);
                        if (!$pd_zt) {
                                     echo json_encode([
                                        'code'=>0,
                                        'msg'=>'设备不在线，请检查网络后重试!',
                                                
                                     ]);
                                     exit;
                        }
                        // 判断账户密码是否正确
                        if (!@ssh2_auth_password($pd_zt, $scp_name, $scp_pwd)) {
                                    echo json_encode([
                                        'code'=>0,
                                        'msg'=>'设备账户密码错误，请检查!',
                                                
                                     ]);
                                     exit;
                        }                        
                        
                    // 设置写入数据库的参数
                       $data=[
                        'starting_time'=>$dq_timec,
                        'w_name'=>$chengxu_name,
                        'm_name'=>$name,
                       ];

                        // 数据库查询设备的账户密码
                        $ad = Db::table('fxcnc_user')->where('id',1)->select()->toArray();
                        // 设置系统主机的ip和账户密码
                        $connection = @ssh2_connect($ad[0]['root_ip'], 22);
                        // 判断服务器连接状态
                        if (!$connection) {
                                     echo json_encode([
                                        'code'=>0,
                                        'msg'=>'服务器连接失败，请检查SSH设置',
                                                
                                     ]);
                                     exit;
                        } 
                        // 判断服务器账户密码
                         if (!@ssh2_auth_password($connection, $ad[0]['root_name'], $ad[0]['root_pwd'])) {
                                     echo json_encode([
                                        'code'=>0,
                                        'msg'=>'服务器,账户密码错误',
                                                
                                     ]);
                                     exit;                             
                         }else{
                                    // 执行代码传输程序
                                     $stream = ssh2_exec($connection, $chuanshu);

                         }

                //    添加数据
               
                $insert= Db::table('fxcnc_jgjl')->insert($data);
                     if (!empty($insert)) {
                    echo json_encode([
                        'code'=>0,
                        'msg'=>'上传成功，写入数据库成功!',
                        'dir'=>$current_time,
                        
                    ]);
                    };
         
            }

  
    }


        // 机床加工记录---------------
        // 机床加工记录---------------
        // 机床加工记录---------------

             public function fxcxgl4(){
                // 获取机床名称
                $cxname=input('post.name');
             
                $jgjl = Db::table('fxcnc_jgjl')->where('m_name',$cxname)->order('id', 'desc')->select()->toArray();
                 foreach ($jgjl as &$v) {
                  $time=  date("Y-m-d H:i:s", $v['starting_time']);
                      $v['time']=$time;
                     

                    }
               echo json_encode($jgjl);

             }








// 枫逍机床设置
// 枫逍机床设置
// 枫逍机床设置
// 枫逍机床设置
                 public function fxsz1(){

                    $ad = Db::table('fxcnc_shezhi')->order('id', 'desc')->select()->toArray();
                    foreach ($ad as &$v) {
                      $v['key']=$v['id'];
                      $v['ftp_lujing']=$_SERVER['DOCUMENT_ROOT'].'/'.'NC'.'/'.$v['id'];

                    }
                      echo json_encode($ad);
            
    }


// ftp模式添加机床
                 public function fxsz2(){
                    $transport_type= input('post.transport_type');
                    // scp平台限制
                    // scp平台限制
                    // scp平台限制
                    // scp平台限制
                    // scp平台限制

                //      if (PHP_OS=="WINNT" && $transport_type==2) {
                //     echo json_encode([
                //         'code'=>10,
                //         'msg'=>'系统平台为Windows，暂不支持SCP传输',
                //     ]);
                //     exit;
                //   }
                     // scp平台限制
                    // scp平台限制
                    // scp平台限制
                    // scp平台限制
                    // scp平台限制
                        
                    // 传输类型 FTP SCP   transport_type
 
                    if (empty($transport_type)) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'请选择传输模式',
                    ]);
                    exit;
                   }


                   $id= input('post.id');                   

                   $name= input('post.name');
                //    机床名称重复提醒
                //    $ret= Db::table('fxcnc_shezhi')  ->column('name','id');  
                //     foreach ($ret as $key => $value) {
                //         if ($name==$value) {
                //            echo json_encode([
                //         'code'=>1,
                //         'msg'=>'机床名称重复，请更换',
                //     ]);
                //     exit;
                //         }else {
                           
                //         }
                //     }

                   if (empty($name)) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'请输入机床名',
                    ]);
                    exit;
                   }
                //    判断机床IP
                   $ip= input('post.ip');


                    if (empty($ip)) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'请输入机床IP',
                    ]);
                    exit;
                   }
                //    排序做判断
                    $sort= input('post.sort');
                // SCP账户
                   $scp_name= input('post.scp_name');
                    if (empty($scp_name) && $transport_type==2) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'请输入SCP账户',
                    ]);
                    exit;
                   }
                // SCP密码
                  $scp_pwd= input('post.scp_pwd');
                    if (empty($scp_pwd) && $transport_type==2) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'请输入SCP密码',
                    ]);
                    exit;
                   }
                // SCP上传路径
                  $scp_dir= input('post.scp_dir');
                    if (empty($scp_dir) && $transport_type==2) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'请输入SCP密码',
                    ]);
                    exit;
                   }



                    // 上传模式 目录 文件 upload_mode
                    $upload_mode= input('post.upload_mode');
                      if (empty($upload_mode)) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'请选择上传类型',
                    ]);
                    exit;
                   }
                     // 状态
                    $status= input('post.status');
                      if (empty($status)) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'请选择开启或者关闭',
                    ]);
                    exit;
                   }
                //    整合所有添加的数据到data
                   $data=[
                    'name'=>$name,
                    'ip'=>$ip,
                    'sort'=>$sort,
                    'status'=>$status,
                    'transport_type'=>$transport_type,
                    'upload_mode'=>$upload_mode,
                    'scp_pwd'=>$scp_pwd,
                    'scp_dir'=>$scp_dir,
                    'scp_name'=>$scp_name,
                   ];
                //    修改数据
                //    修改数据
                //    修改数据
                //    修改数据
        $update= Db::table('fxcnc_shezhi')->where('id',$id)->update($data);
         if (empty($update)) {
            echo json_encode([
                    'code'=>1,
                    'msg'=>'数据未改变',
                    ]);
                }else {
                    echo json_encode([
                    'code'=>0,
                    'msg'=>'修改成功',
                    ]);
                }
            


    }

                     public function fxsz3(){
                        
                    $delid= input('post.id');
                    // echo $delid;
                    $del = Db::table('fxcnc_shezhi')->where('id', $delid)->delete();
                    if (empty($del)) {
                    echo json_encode([
                            'code'=>1,
                            'msg'=>'删除失败',
                            ]);
                        }else {
                            echo json_encode([
                            'code'=>0,
                            'msg'=>'删除成功',
                            ]);
                        }
   
            
    }


                    public function fxsz4(){

                    $transport_type= input('post.transport_type');
                    // scp平台限制
                    // scp平台限制
                    // scp平台限制
                    // scp平台限制
                    // scp平台限制
                //      if ($_SERVER['OS']=="Windows_NT"&& $transport_type==2) {
                //     echo json_encode([
                //         'code'=>10,
                //         'msg'=>'系统平台为Windows，暂不支持SCP传输',
                //     ]);
                //     exit;
                //   }
                     // scp平台限制
                    // scp平台限制
                    // scp平台限制
                    // scp平台限制
                    // scp平台限制
                        
                    // 传输类型 FTP SCP   transport_type
 
                    if (empty($transport_type)) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'请选择传输模式',
                    ]);
                    exit;
                   }


                   $id= input('post.id');                   

                   $name= input('post.name');
                //    机床名称重复提醒
                //    $ret= Db::table('fxcnc_shezhi')  ->column('name','id');  
                //     foreach ($ret as $key => $value) {
                //         if ($name==$value) {
                //            echo json_encode([
                //         'code'=>1,
                //         'msg'=>'机床名称重复，请更换',
                //     ]);
                //     exit;
                //         }else {
                           
                //         }
                //     }

                   if (empty($name)) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'请输入机床名',
                    ]);
                    exit;
                   }
                //    判断机床IP
                   $ip= input('post.ip');


                    if (empty($ip)) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'请输入机床IP',
                    ]);
                    exit;
                   }
                //    排序做判断
                    $sort= input('post.sort');
                // SCP账户
                   $scp_name= input('post.scp_name');
                    if (empty($scp_name) && $transport_type==2) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'请输入SCP账户',
                    ]);
                    exit;
                   }
                // SCP密码
                  $scp_pwd= input('post.scp_pwd');
                    if (empty($scp_pwd) && $transport_type==2) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'请输入SCP密码',
                    ]);
                    exit;
                   }
                // SCP上传路径
                  $scp_dir= input('post.scp_dir');
                    if (empty($scp_dir) && $transport_type==2) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'请输入SCP上传路径',
                    ]);
                    exit;
                   }



                    // 上传模式 目录 文件 upload_mode
                    $upload_mode= input('post.upload_mode');
                      if (empty($upload_mode)) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'请选择上传类型',
                    ]);
                    exit;
                   }
                     // 状态
                    $status= input('post.status');
                      if (empty($status)) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'请选择开启或者关闭',
                    ]);
                    exit;
                   }
                //    整合所有添加的数据到data
                   $data=[
                    'name'=>$name,
                    'ip'=>$ip,
                    'sort'=>$sort,
                    'status'=>$status,
                    'transport_type'=>$transport_type,
                    'upload_mode'=>$upload_mode,
                    'scp_pwd'=>$scp_pwd,
                    'scp_dir'=>$scp_dir,
                    'scp_name'=>$scp_name,
                   ];

                //    添加数据
               
                $insert= Db::table('fxcnc_shezhi')->insert($data);
                     if (!empty($insert)) {
                    echo json_encode([
                        'code'=>0,
                        'msg'=>'添加成功,目录已创建',
                    ]);
                    }
                // 创建文件夹
                $array= Db::table('fxcnc_shezhi')->order('id', 'desc')->column('id','id');  
                // reset获取数组中的第一个值
                $firstElement = reset($array);

                $dir=$_SERVER['DOCUMENT_ROOT'].'/'.'NC'.'/'.$firstElement;
                    
        
                if (!is_dir($dir)) {
                    mkdir($dir, 0777, true);
                }

    }    

        public function fxlogin(){
            $name=input('post.name');  
             if (empty($name)) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'账户不能为空!',
                    ]);
                    exit;
                   }            
            $password=input('post.password');  
             if (empty($password)) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'密码不能为空!',
                    ]);
                    exit;
                   } 
            // 查询数据库的账户密码         
           $user = Db::table('fxcnc_user')->where('name',$name)->find();
             if (empty($user)) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'账户不存在，默认账户是:fxmescn',
                    ]);
                    exit;
                   }   
             if ($user['password'] != md5($password) ) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'密码错误,默认密码是:123456',
                    ]);
                    exit;
                   }
                //    删除密码字段
                unset($user['password']);
              $user['ticket']=  Ticket::create($user['Id'],'fxmes.cn');
                    echo json_encode([
                        'code'=>0,
                        'msg'=>'登陆成功!',
                        'data'=>$user
                    ]);                              

        }
            // 查询user数据
         public function Fxuser1(){
             $user = Db::table('fxcnc_user')->where('Id',1)->find();
                unset($user['password']);             
                    echo json_encode([
                        'code'=>0,
                        'msg'=>'登陆成功!',
                        'data'=>$user
                    ]);                 

        }

         public function Fxuser2(){
             $data=input('post.');  
           
            $update= Db::table('fxcnc_user')->where('Id',1)->update($data);
         
                    echo json_encode([
                        'code'=>0,
                        'msg'=>'修改成功!',
                       
                    ]);                 

        }

         public function Fxuser3(){
           $ys_pwd=input('post.ys_pwd');  
           $user = Db::table('fxcnc_user')->where('Id',1)->find();
             if ($user['password'] != md5($ys_pwd) ) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'原始密码错误!',
                    ]);
                    exit;
                   }          
                //    获取新密码验证
            $new_pwd1=input('post.new_pwd1'); 
             if (empty($new_pwd1)) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'新密码不能为空!',
                    ]);
                    exit;
                   } 
            $new_pwd2=input('post.new_pwd2');  
             if ($new_pwd1 != $new_pwd2) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'两次输入的新密码不一致,请检查后再试!',
                    ]);
                    exit;
                   } 
             if ($ys_pwd == $new_pwd2) {
                    echo json_encode([
                        'code'=>1,
                        'msg'=>'新旧密码相同，无需修改!',
                    ]);
                    exit;
                   } 

           $pwd=md5($new_pwd1);
           $data=[
                    'password'=>$pwd,

                   ];
        $update= Db::table('fxcnc_user')->where('Id',1)->update($data);
             if ($update) {
                    echo json_encode([
                        'code'=>0,
                        'msg'=>'密码修改成功!',
                    ]);
                    exit;
                   } 
        } 
        
        // 西门子往复层切铣面
    public function Fxhcx1001(){
                    // 工件长度
                    $cd_c=input('cd_c');
                    // 工件宽度
                    $cd_k=input('cd_k');
                    // 安全高度
                    $aq_gd=input('aq_gd');
                    // 起始高度
                    $qs_qz=input('qs_qz');
                    // 结束高度
                    $js_jz=input('js_jz');
                    // 每刀深度Z
                    $md_sdz=input('md_sdz');
                    // 刀具直径
                    $dj_d1=input('dj_d');
                    $dj_d = number_format($dj_d1, 1,'.', '');
                    // number_format($number, 0, '.', '')
                    // 刀具号T
                    $dj_h=input('dj_h');
                    // 主轴转速
                    $zz_zs=input('zz_zs');
                    // 切削进给
                    $qx_jj=input('qx_jj');
                    // 下刀点延伸
                    $xd_ys=input('xd_ys');
                    // 刀具步距
                    $bujuys=input('buju');
                    $buju = number_format($bujuys, 1,'.', '');
// 刀具下刀点起始值X   ，只获取小数点后2位
                    // $x_qsz=$cd_c/2+$xd_ys+$dj_d/2;
                    // $x_qsz=$cd_c/2+$xd_ys+$dj_d/2;
                     $x_qsz = number_format($cd_c/2+$xd_ys+$dj_d/2, 2,'.', '');
                    // 刀具下刀点起始值X,不加延伸的值 
                     $x_qsz_b = number_format($cd_c/2+$dj_d/2, 2,'.', '');
// 刀具下刀点起始值Y                    
                    // $y_qsz=-$cd_k/2+($dj_d/2-$dj_d*0.3);
                     $y_qsz = number_format(-$cd_k/2+($dj_d/2-$dj_d*0.3), 2,'.', '');
// 设置程序初始参数                    
$fxhcx = <<< FXHCX
G40 G17 G90
SUPA G0 Z0.0 D0
;刀具直径:$dj_d 工件长宽:$cd_c*$cd_k
R1=$qs_qz ;Z起始高度
R2=$js_jz ;Z结束深度
R3=$md_sdz ;Z每刀下刀深度
R4=$zz_zs ;主轴转速S
R5=$qx_jj ;切削进给F
R6=$aq_gd ;安全高度
G54 T$dj_h D1
IF R1< R2 GOTOF FXMESCN3 ;防过切
IF R1>= R6 GOTOF FXMESCN3 ;防过切
G0 G90 X$x_qsz Y$y_qsz S=R4
M3
G0 Z=R6
M8
FXMESCN1:
G0 G90 X$x_qsz Y$y_qsz
G0 Z=R1+1
G01 Z=R1 F=R5\n
FXHCX;
// 获取Y正方向的最大值              
$y_qsz_z = abs($y_qsz);
$zs_buju_z=($y_qsz_z*2)/ceil(($y_qsz_z*2)/$buju);
// 获取只有小数点后2位的真实步距
$zs_buju = number_format($zs_buju_z, 1,'.', '');
// 获取需要切削的次数
$i=-1;
$xi=1;
$qsy=$y_qsz;
$nbr=ceil(($y_qsz_z*2)/$buju);

while ($i <= $nbr) {
    if ($i==-1) {
        $i=0;
    } else {
       $fxhcx.='Y'.$qsy."\n";
    }
    


    $qsy=$qsy+$zs_buju; //步距自增 
    $qsy = number_format($qsy, 1,'.', ''); //步距取整  
    if ($xi==1) {
    //   $fxhcx.='X-'.$x_qsz_b.'</br>';
       $fxhcx.='X-'.$x_qsz_b."\n";
       $xi=2;
    } else {
    //   $fxhcx.='X'.$x_qsz_b.'</br>';
       $fxhcx.='X'.$x_qsz_b."\n";
       $xi=1;
    }
    // 更新条件 
    $i = $i + 1; 
  }



$fxhcx .= <<< FXHCX
G0 Z=R6
R1=R1-R3
IF R1>=R2 GOTOB FXMESCN1
IF R1<=R2-R3 GOTOF FXMESCN3
R1=R2
GOTOB FXMESCN1
FXMESCN3:
M05
M09
SUPA G0 Z0.0 D0
M30
FXHCX;


// 设置宏程序的名字和路径，按照当前时间来
$current_time = 'D'.$dj_d1.'--'.date('H-i-s').'.MPF';
// $file = $_SERVER['DOCUMENT_ROOT'].'/NC/HCX/fx.MPF';// 指定文件路径
$file = $_SERVER['DOCUMENT_ROOT'].'/NC/FXHCX/'.$current_time;// 指定文件路径

$fileurl = 'http://'.$_SERVER['HTTP_HOST'].'/NC/FXHCX/'.$current_time;;


$fxhcx_msgth = str_replace("\n", "</br>",$fxhcx);

// $originalString = "Hello World!";
// $search = "world";
// $replace = "PHP";
// $fxhcx_msgth = str_ireplace($search, $replace, $originalString);
// 使用file_put_contents创建文件并写入内容
file_put_contents($file, $fxhcx);




                    echo json_encode([
                        'code'=>0,
                        'msg'=>"程序已自动生成!",
                        'fxhcx_msg'=>$fxhcx,
                        'fxhcx_msgth'=>$fxhcx_msgth,
                        'fileurl'=>$fileurl,

                    ]);
  

    }      
        
        
        
        
        
//   西门子单向层切铣面     
    public function Fxhcx1002(){
                    // 工件长度
                    $cd_c=input('cd_c');
                    // 工件宽度
                    $cd_k=input('cd_k');
                    // 安全高度
                    $aq_gd=input('aq_gd');
                    // 起始高度
                    $qs_qz=input('qs_qz');
                    // 结束高度
                    $js_jz=input('js_jz');
                    // 每刀深度Z
                    $md_sdz=input('md_sdz');
                    // 刀具直径
                    $dj_d1=input('dj_d');
                    $dj_d = number_format($dj_d1, 1,'.', '');
                    // number_format($number, 0, '.', '')
                    // 刀具号T
                    $dj_h=input('dj_h');
                    // 主轴转速
                    $zz_zs=input('zz_zs');
                    // 切削进给
                    $qx_jj=input('qx_jj');
                    // 下刀点延伸
                    $xd_ys=input('xd_ys');
                    // 刀具步距
                    $bujuys=input('buju');
                    $buju = number_format($bujuys, 1,'.', '');
// 刀具下刀点起始值X   ，只获取小数点后2位
                    // $x_qsz=$cd_c/2+$xd_ys+$dj_d/2;
                    // $x_qsz=$cd_c/2+$xd_ys+$dj_d/2;
                     $x_qsz = number_format($cd_c/2+$xd_ys+$dj_d/2, 2,'.', '');
                    // 刀具下刀点起始值X,不加延伸的值 
                     $x_qsz_b = number_format($cd_c/2+$dj_d/2, 2,'.', '');
// 刀具下刀点起始值Y                    
                    // $y_qsz=-$cd_k/2+($dj_d/2-$dj_d*0.3);
                     $y_qsz = number_format(-$cd_k/2+($dj_d/2-$dj_d*0.3), 2,'.', '');
// 设置程序初始参数                    
$fxhcx = <<< FXHCX
G40 G17 G90
SUPA G0 Z0.0 D0
;刀具直径:$dj_d 工件长宽:$cd_c*$cd_k
R1=$qs_qz ;Z起始高度
R2=$js_jz ;Z结束深度
R3=$md_sdz ;Z每刀下刀深度
R4=$zz_zs ;主轴转速S
R5=$qx_jj ;切削进给F
R6=$aq_gd ;安全高度
G54 T$dj_h D1
IF R1 < R2 GOTOF FXMESCN3 ;防过切
IF R1 >= R6 GOTOF FXMESCN3 ;防过切
G0 G90 X$x_qsz Y$y_qsz S=R4
M3
G0 Z=R6
M8
IF R1< R2 GOTOF FXMESCN3
FXMESCN1:
G0 G90 X$x_qsz Y$y_qsz
G0 Z=R1+1
G01 Z=R1 F=R5\n
FXHCX;
// 获取Y正方向的最大值              
$y_qsz_z = abs($y_qsz);
$zs_buju_z=($y_qsz_z*2)/ceil(($y_qsz_z*2)/$buju);
// 获取只有小数点后2位的真实步距
$zs_buju = number_format($zs_buju_z, 1,'.', '');
// 获取需要切削的次数
$i=0;
$qsy=$y_qsz;
// 获取切削的次数
$nbr=ceil(($y_qsz_z*2)/$buju);

while ($i <= $nbr) {
    // if ($i==-1) {
    //     $i=0;
    // } else {
    //   $fxhcx.='Y'.$qsy."\n";
    // }
    $fxhcx.='X-'.$x_qsz_b."\n";
    $qsy=$qsy+$zs_buju; //步距自增 
    $fxhcx.='G0 Z=R6'."\n";
    if ($i < $nbr) {
    $fxhcx.='X'.$x_qsz.'Y'.$qsy."\n";
    $fxhcx.='G0 Z=R1+1'."\n";
    $fxhcx.='G01 Z=R1 '."\n";
    }




    // $qsy = number_format($qsy, 1,'.', ''); //步距取整  
    // if ($xi==1) {
    // //   $fxhcx.='X-'.$x_qsz_b.'</br>';
    //   $fxhcx.='X-'.$x_qsz_b."\n";
    //   $xi=2;
    // } else {
    // //   $fxhcx.='X'.$x_qsz_b.'</br>';
    //   $fxhcx.='X'.$x_qsz_b."\n";
    //   $xi=1;
    // }
    // 更新条件 
    $i = $i + 1; 
  }



$fxhcx .= <<< FXHCX
R1=R1-R3
IF R1>=R2 GOTOB FXMESCN1
IF R1<=R2-R3 GOTOF FXMESCN3
R1=R2
GOTOB FXMESCN1
FXMESCN3:
M09
M05
SUPA G0 Z0.0 D0
M30
FXHCX;


// 设置宏程序的名字和路径，按照当前时间来
$current_time = 'D'.$dj_d1.'--'.date('H-i-s').'.MPF';
// $file = $_SERVER['DOCUMENT_ROOT'].'/NC/HCX/fx.MPF';// 指定文件路径
$file = $_SERVER['DOCUMENT_ROOT'].'/NC/FXHCX/'.$current_time;// 指定文件路径

$fileurl = 'http://'.$_SERVER['HTTP_HOST'].'/NC/FXHCX/'.$current_time;;


$fxhcx_msgth = str_replace("\n", "</br>",$fxhcx);

// $originalString = "Hello World!";
// $search = "world";
// $replace = "PHP";
// $fxhcx_msgth = str_ireplace($search, $replace, $originalString);
// 使用file_put_contents创建文件并写入内容
file_put_contents($file, $fxhcx);




                    echo json_encode([
                        'code'=>0,
                        'msg'=>"程序已自动生成",
                        'fxhcx_msg'=>$fxhcx,
                        'fxhcx_msgth'=>$fxhcx_msgth,
                        'fileurl'=>$fileurl,

                    ]);
  

    }      
        
        
        
// 法兰克往复层切铣平面       
    public function Fxhcx2001(){
                    // 工件长度
                    $cd_c=input('cd_c');
                    // 工件宽度
                    $cd_k=input('cd_k');
                    // 安全高度
                    $aq_gd=input('aq_gd');
                    // 起始高度
                    $qs_qz=input('qs_qz');
                    // 结束高度
                    $js_jz=input('js_jz');
                    // 每刀深度Z
                    $md_sdz=input('md_sdz');
                    // 刀具直径
                    $dj_d1=input('dj_d');
                    $dj_d = number_format($dj_d1, 1,'.', '');
                    // number_format($number, 0, '.', '')
                    // 刀具号T
                    $dj_h=input('dj_h');
                    // 主轴转速
                    $zz_zs=input('zz_zs');
                    // 切削进给
                    $qx_jj=input('qx_jj');
                    // 下刀点延伸
                    $xd_ys=input('xd_ys');
                    // 刀具步距
                    $bujuys=input('buju');
                    $buju = number_format($bujuys, 1,'.', '');
// 刀具下刀点起始值X   ，只获取小数点后2位
                    // $x_qsz=$cd_c/2+$xd_ys+$dj_d/2;
                    // $x_qsz=$cd_c/2+$xd_ys+$dj_d/2;
                     $x_qsz = number_format($cd_c/2+$xd_ys+$dj_d/2, 2,'.', '');
                    // 刀具下刀点起始值X,不加延伸的值 
                     $x_qsz_b = number_format($cd_c/2+$dj_d/2, 2,'.', '');
// 刀具下刀点起始值Y                    
                    // $y_qsz=-$cd_k/2+($dj_d/2-$dj_d*0.3);
                     $y_qsz = number_format(-$cd_k/2+($dj_d/2-$dj_d*0.3), 2,'.', '');
// 设置程序初始参数                    
$fxhcx = <<< FXHCX
G40 G17 G90
G91 G28 Z0
G54 
T$dj_h M6
#1=$qs_qz
#2=$js_jz
#3=$md_sdz
#4=$zz_zs
#5=$qx_jj
#6=$aq_gd
IF [#1LT#2] GOTO2001
IF [#1GE#6] GOTO2001
G0 G90 X$x_qsz Y$y_qsz S#4
M3
G0 Z#6
M8
WHILE[#1GE#2]DO2001
G0 G90 X$x_qsz Y$y_qsz
G0 Z[#1+1]
G01 Z#1 F#5\n
FXHCX;
// 获取Y正方向的最大值              
$y_qsz_z = abs($y_qsz);
$zs_buju_z=($y_qsz_z*2)/ceil(($y_qsz_z*2)/$buju);
// 获取只有小数点后2位的真实步距
$zs_buju = number_format($zs_buju_z, 1,'.', '');
// 获取需要切削的次数
$i=-1;
$xi=1;
$qsy=$y_qsz;
$nbr=ceil(($y_qsz_z*2)/$buju);

while ($i <= $nbr) {
    if ($i==-1) {
        $i=0;
    } else {
       $fxhcx.='Y'.$qsy."\n";
    }
    


    $qsy=$qsy+$zs_buju; //步距自增 
    $qsy = number_format($qsy, 1,'.', ''); //步距取整  
    if ($xi==1) {
    //   $fxhcx.='X-'.$x_qsz_b.'</br>';
       $fxhcx.='X-'.$x_qsz_b."\n";
       $xi=2;
    } else {
    //   $fxhcx.='X'.$x_qsz_b.'</br>';
       $fxhcx.='X'.$x_qsz_b."\n";
       $xi=1;
    }
    // 更新条件 
    $i = $i + 1; 
  }



$fxhcx .= <<< FXHCX
G0 Z#6
IF[#1EQ#2]GOTO2001
#1=#1-#3
IF[#1LT#2]THEN#1=#2
END2001
N2001 M05 M09
G91 G28 Z0
M30
FXHCX;


// 设置宏程序的名字和路径，按照当前时间来
$current_time = 'D'.$dj_d1.'--'.date('H-i-s').'.NC';
// $file = $_SERVER['DOCUMENT_ROOT'].'/NC/HCX/fx.MPF';// 指定文件路径
$file = $_SERVER['DOCUMENT_ROOT'].'/NC/FXHCX/'.$current_time;// 指定文件路径

$fileurl = 'http://'.$_SERVER['HTTP_HOST'].'/NC/FXHCX/'.$current_time;;


$fxhcx_msgth = str_replace("\n", "</br>",$fxhcx);

// $originalString = "Hello World!";
// $search = "world";
// $replace = "PHP";
// $fxhcx_msgth = str_ireplace($search, $replace, $originalString);
// 使用file_put_contents创建文件并写入内容
file_put_contents($file, $fxhcx);




                    echo json_encode([
                        'code'=>0,
                        'msg'=>"程序已自动生成!",
                        'fxhcx_msg'=>$fxhcx,
                        'fxhcx_msgth'=>$fxhcx_msgth,
                        'fileurl'=>$fileurl,

                    ]);
  

    }      
               
        
        
        
//   法兰克单向层切铣面     
    public function Fxhcx2002(){
                    // 工件长度
                    $cd_c=input('cd_c');
                    // 工件宽度
                    $cd_k=input('cd_k');
                    // 安全高度
                    $aq_gd=input('aq_gd');
                    // 起始高度
                    $qs_qz=input('qs_qz');
                    // 结束高度
                    $js_jz=input('js_jz');
                    // 每刀深度Z
                    $md_sdz=input('md_sdz');
                    // 刀具直径
                    $dj_d1=input('dj_d');
                    $dj_d = number_format($dj_d1, 1,'.', '');
                    // number_format($number, 0, '.', '')
                    // 刀具号T
                    $dj_h=input('dj_h');
                    // 主轴转速
                    $zz_zs=input('zz_zs');
                    // 切削进给
                    $qx_jj=input('qx_jj');
                    // 下刀点延伸
                    $xd_ys=input('xd_ys');
                    // 刀具步距
                    $bujuys=input('buju');
                    $buju = number_format($bujuys, 1,'.', '');
// 刀具下刀点起始值X   ，只获取小数点后2位
                    // $x_qsz=$cd_c/2+$xd_ys+$dj_d/2;
                    // $x_qsz=$cd_c/2+$xd_ys+$dj_d/2;
                     $x_qsz = number_format($cd_c/2+$xd_ys+$dj_d/2, 2,'.', '');
                    // 刀具下刀点起始值X,不加延伸的值 
                     $x_qsz_b = number_format($cd_c/2+$dj_d/2, 2,'.', '');
// 刀具下刀点起始值Y                    
                    // $y_qsz=-$cd_k/2+($dj_d/2-$dj_d*0.3);
                     $y_qsz = number_format(-$cd_k/2+($dj_d/2-$dj_d*0.3), 2,'.', '');
// 设置程序初始参数                    
$fxhcx = <<< FXHCX
G40 G17 G90
G91 G28 Z0
G54 
T$dj_h M6
#1=$qs_qz
#2=$js_jz
#3=$md_sdz
#4=$zz_zs
#5=$qx_jj
#6=$aq_gd
IF [#1LT#2] GOTO2001
IF [#1GE#6] GOTO2001
G0 G90 X$x_qsz Y$y_qsz S#4
M3
G0 Z#6
M8
WHILE[#1GE#2]DO2002
G0 G90 X$x_qsz Y$y_qsz
G0 Z[#1+1]
G01 Z#1 F#5\n
FXHCX;
// 获取Y正方向的最大值              
$y_qsz_z = abs($y_qsz);
$zs_buju_z=($y_qsz_z*2)/ceil(($y_qsz_z*2)/$buju);
// 获取只有小数点后2位的真实步距
$zs_buju = number_format($zs_buju_z, 1,'.', '');
// 获取需要切削的次数
$i=0;
$qsy=$y_qsz;
// 获取切削的次数
$nbr=ceil(($y_qsz_z*2)/$buju);

while ($i <= $nbr) {
    // if ($i==-1) {
    //     $i=0;
    // } else {
    //   $fxhcx.='Y'.$qsy."\n";
    // }
    $fxhcx.='X-'.$x_qsz_b."\n";
    $qsy=$qsy+$zs_buju; //步距自增 
    $fxhcx.='G0 Z#6'."\n";
    if ($i < $nbr) {
    $fxhcx.='X'.$x_qsz.'Y'.$qsy."\n";
    $fxhcx.='G0 Z#1+1'."\n";
    $fxhcx.='G01 Z#1 '."\n";
    }

    $i = $i + 1; 
  }



$fxhcx .= <<< FXHCX
IF[#1EQ#2]GOTO2002
#1=#1-#3
IF[#1LT#2]THEN#1=#2
END2002
N2002 M05 M09
M30
FXHCX;


// 设置宏程序的名字和路径，按照当前时间来
$current_time = 'D'.$dj_d1.'--'.date('H-i-s').'.NC';
// $file = $_SERVER['DOCUMENT_ROOT'].'/NC/HCX/fx.MPF';// 指定文件路径
$file = $_SERVER['DOCUMENT_ROOT'].'/NC/FXHCX/'.$current_time;// 指定文件路径

$fileurl = 'http://'.$_SERVER['HTTP_HOST'].'/NC/FXHCX/'.$current_time;;


$fxhcx_msgth = str_replace("\n", "</br>",$fxhcx);

// $originalString = "Hello World!";
// $search = "world";
// $replace = "PHP";
// $fxhcx_msgth = str_ireplace($search, $replace, $originalString);
// 使用file_put_contents创建文件并写入内容
file_put_contents($file, $fxhcx);




                    echo json_encode([
                        'code'=>0,
                        'msg'=>"程序已自动生成",
                        'fxhcx_msg'=>$fxhcx,
                        'fxhcx_msgth'=>$fxhcx_msgth,
                        'fileurl'=>$fileurl,

                    ]);
  

    }      
        
          
        
        
        
        
        
        
        
}
